﻿#ifndef ITMODELBASEIMPL_H
#define ITMODELBASEIMPL_H

#include "commdef.h"
#include "tobject.h"

template<class T>
class ITModelBaseImpl : public T
{
public:
    virtual void Invoke(const TArgs* pArgs)
    {
        return;
    }
};

#define T_DECLARE_INVOKE\
    public:\
    virtual void Invoke(const TArgs* pArgs);
#define T_BEGIN_MAP(T)\
    void T::Invoke(const TArgs* pArgs)\
{
#define T_HANDLER(CmdId, FuncName, InArgs, OutArgs)\
    if(CmdId == pArgs->CommandID)\
{\
    FuncName(static_cast<InArgs*>(pArgs->CommandArgs),static_cast<OutArgs*>(pArgs->CommandRst));\
    return;\
}
#define T_END_MAP\
    return;\
}

#endif // ITMODELBASEIMPL_H
